home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 April: Mac OS SDK / Dev.CD Apr 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / CIncludes / Navigation.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  18.0 KB  |  489 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Navigation.h
  3.  
  4.      Contains:    Navigation Services Interfaces
  5.  
  6.      Version:    Technology:    1.1
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1996-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __NAVIGATION__
  18. #define __NAVIGATION__
  19.  
  20. #ifndef __MACTYPES__
  21. #include <MacTypes.h>
  22. #endif
  23. #ifndef __APPLEEVENTS__
  24. #include <AppleEvents.h>
  25. #endif
  26. #ifndef __TRANSLATION__
  27. #include <Translation.h>
  28. #endif
  29. #ifndef __MACWINDOWS__
  30. #include <MacWindows.h>
  31. #endif
  32. #ifndef __CODEFRAGMENTS__
  33. #include <CodeFragments.h>
  34. #endif
  35.  
  36.  
  37.  
  38.  
  39. #if PRAGMA_ONCE
  40. #pragma once
  41. #endif
  42.  
  43. #ifdef __cplusplus
  44. extern "C" {
  45. #endif
  46.  
  47. #if PRAGMA_IMPORT
  48. #pragma import on
  49. #endif
  50.  
  51. #if PRAGMA_STRUCT_ALIGN
  52.     #pragma options align=mac68k
  53. #elif PRAGMA_STRUCT_PACKPUSH
  54.     #pragma pack(push, 2)
  55. #elif PRAGMA_STRUCT_PACK
  56.     #pragma pack(2)
  57. #endif
  58.  
  59.  
  60. enum {
  61.     kNavMissingKindStringErr    = -5699,
  62.     kNavInvalidCustomControlMessageErr = -5698,
  63.     kNavCustomControlMessageFailedErr = -5697,
  64.     kNavInvalidSystemConfigErr    = -5696
  65. };
  66.  
  67.  
  68.  
  69. enum {
  70.     kNavDialogOptionsVersion    = 0,
  71.     kNavReplyRecordVersion        = 0,
  72.     kNavCBRecVersion            = 0,
  73.     kNavFileOrFolderVersion        = 0,
  74.     kNavMenuItemSpecVersion        = 0
  75. };
  76.  
  77. typedef UInt16                             NavDataVersion;
  78.  
  79. enum {
  80.                                                                 /* input action codes for NavAskSaveChanges() */
  81.     kNavSaveChangesClosingDocument = 1,
  82.     kNavSaveChangesQuittingApplication = 2,
  83.     kNavSaveChangesOther        = 0
  84. };
  85.  
  86. typedef UInt32                             NavAskSaveChangesAction;
  87.  
  88. enum {
  89.                                                                 /* result codes for NavAskSaveChanges() */
  90.     kNavAskSaveChangesSave        = 1,
  91.     kNavAskSaveChangesCancel    = 2,
  92.     kNavAskSaveChangesDontSave    = 3
  93. };
  94.  
  95. typedef UInt32                             NavAskSaveChangesResult;
  96.  
  97. enum {
  98.                                                                 /* result codes for NavAskDiscardChanges() */
  99.     kNavAskDiscardChanges        = 1,
  100.     kNavAskDiscardChangesCancel    = 2
  101. };
  102.  
  103. typedef UInt32                             NavAskDiscardChangesResult;
  104.  
  105. enum {
  106.                                                                 /* which elements are being filtered for objects: */
  107.     kNavFilteringBrowserList    = 0,
  108.     kNavFilteringFavorites        = 1,
  109.     kNavFilteringRecents        = 2,
  110.     kNavFilteringShortCutVolumes = 3,
  111.     kNavFilteringLocationPopup    = 4                                /* for v1.1 or greater */
  112. };
  113.  
  114. typedef short                             NavFilterModes;
  115.  
  116. struct NavFileOrFolderInfo {
  117.     UInt16                             version;
  118.     Boolean                         isFolder;
  119.     Boolean                         visible;
  120.     UInt32                             creationDate;
  121.     UInt32                             modificationDate;
  122.     union {
  123.         struct {
  124.             Boolean                         locked;                /* file is locked */
  125.             Boolean                         resourceOpen;        /* resource fork is opened */
  126.             Boolean                         dataOpen;            /* data fork is opened */
  127.             Boolean                         reserved1;
  128.             UInt32                             dataSize;            /* size of the data fork */
  129.             UInt32                             resourceSize;        /* size of the resource fork */
  130.             FInfo                             finderInfo;            /* more file info: */
  131.             FXInfo                             finderXInfo;
  132.         }                                 fileInfo;
  133.         struct {
  134.             Boolean                         shareable;
  135.             Boolean                         sharePoint;
  136.             Boolean                         mounted;
  137.             Boolean                         readable;
  138.             Boolean                         writeable;
  139.             Boolean                         reserved2;
  140.             UInt32                             numberOfFiles;
  141.             DInfo                             finderDInfo;
  142.             DXInfo                             finderDXInfo;
  143.             char                             reserved3[214];
  144.         }                                 folderInfo;
  145.  
  146.     }                                 fileAndFolder;
  147. };
  148. typedef struct NavFileOrFolderInfo        NavFileOrFolderInfo;
  149.  
  150. union NavEventDataInfo {
  151.     EventRecord *                    event;                        /* for event processing */
  152.     void *                            param;                        /* points to event specific data */
  153. };
  154. typedef union NavEventDataInfo            NavEventDataInfo;
  155.  
  156. struct NavEventData {
  157.     NavEventDataInfo                 eventDataParms;                /* the event data */
  158.     SInt16                             itemHit;                    /* the dialog item number, for v1.1 or greater */
  159. };
  160. typedef struct NavEventData                NavEventData;
  161.  
  162. typedef UInt32                             NavContext;
  163.  
  164. struct NavCBRec {
  165.     UInt16                             version;
  166.     NavContext                         context;                    /* used by customization code to call Navigation Services */
  167.     WindowPtr                         window;                        /* the dialog */
  168.     Rect                             customRect;                    /* local coordinate rectangle of customization area */
  169.     Rect                             previewRect;                /* local coordinate rectangle of the preview area */
  170.     NavEventData                     eventData;
  171.     char                             reserved[222];
  172. };
  173. typedef struct NavCBRec                    NavCBRec;
  174. typedef NavCBRec *                        NavCBRecPtr;
  175.  
  176. enum {
  177.     kNavCBEvent                    = 0,                            /* an event has occurred (update, idle events, etc.) */
  178.     kNavCBCustomize                = 1,                            /* protocol for negotiating customization space */
  179.     kNavCBStart                    = 2,                            /* the navigation dialog is starting up */
  180.     kNavCBTerminate                = 3,                            /* the navigation dialog is closing down */
  181.     kNavCBAdjustRect            = 4,                            /* the navigation dialog is being resized */
  182.     kNavCBNewLocation            = 5,                            /* user has chosen a new location in the browser */
  183.     kNavCBShowDesktop            = 6,                            /* user has navigated to the desktop */
  184.     kNavCBSelectEntry            = 7,                            /* user has made a selection in the browser */
  185.     kNavCBPopupMenuSelect        = 8,                            /* signifies that a popup menu selection was made */
  186.     kNavCBAccept                = 9,                            /* user has accepted the navigation dialog */
  187.     kNavCBCancel                = 10,                            /* user has cancelled the navigation dialog */
  188.     kNavCBAdjustPreview            = 11                            /* preview button was clicked or the preview was resized */
  189. };
  190.  
  191.  
  192. typedef SInt32                             NavEventCallbackMessage;
  193. typedef void *                            NavCallBackUserData;
  194. /* for events and customization: */
  195. typedef CALLBACK_API( void , NavEventProcPtr )(NavEventCallbackMessage callBackSelector, NavCBRecPtr callBackParms, void *callBackUD);
  196. /* for preview support: */
  197. typedef CALLBACK_API( Boolean , NavPreviewProcPtr )(NavCBRecPtr callBackParms, void *callBackUD);
  198. /* filtering callback information: */
  199. typedef CALLBACK_API( Boolean , NavObjectFilterProcPtr )(AEDesc *theItem, void *info, void *callBackUD, NavFilterModes filterMode);
  200. typedef STACK_UPP_TYPE(NavEventProcPtr)                         NavEventUPP;
  201. typedef STACK_UPP_TYPE(NavPreviewProcPtr)                         NavPreviewUPP;
  202. typedef STACK_UPP_TYPE(NavObjectFilterProcPtr)                     NavObjectFilterUPP;
  203. enum { uppNavEventProcInfo = 0x00000FC0 };                         /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes) */
  204. enum { uppNavPreviewProcInfo = 0x000003D0 };                     /* pascal 1_byte Func(4_bytes, 4_bytes) */
  205. enum { uppNavObjectFilterProcInfo = 0x00002FD0 };                 /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 2_bytes) */
  206. #define NewNavEventProc(userRoutine)                             (NavEventUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavEventProcInfo, GetCurrentArchitecture())
  207. #define NewNavPreviewProc(userRoutine)                             (NavPreviewUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavPreviewProcInfo, GetCurrentArchitecture())
  208. #define NewNavObjectFilterProc(userRoutine)                     (NavObjectFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppNavObjectFilterProcInfo, GetCurrentArchitecture())
  209. #define CallNavEventProc(userRoutine, callBackSelector, callBackParms, callBackUD)  CALL_THREE_PARAMETER_UPP((userRoutine), uppNavEventProcInfo, (callBackSelector), (callBackParms), (callBackUD))
  210. #define CallNavPreviewProc(userRoutine, callBackParms, callBackUD)  CALL_TWO_PARAMETER_UPP((userRoutine), uppNavPreviewProcInfo, (callBackParms), (callBackUD))
  211. #define CallNavObjectFilterProc(userRoutine, theItem, info, callBackUD, filterMode)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppNavObjectFilterProcInfo, (theItem), (info), (callBackUD), (filterMode))
  212.  
  213. enum {
  214.     kNavCtlShowDesktop            = 0,                            /*    show desktop,                 parms = nil */
  215.     kNavCtlSortBy                = 1,                            /*    sort key field,             parms->NavSortKeyField */
  216.     kNavCtlSortOrder            = 2,                            /*    sort order,                    parms->NavSortOrder */
  217.     kNavCtlScrollHome            = 3,                            /*    scroll list home,            parms = nil */
  218.     kNavCtlScrollEnd            = 4,                            /*    scroll list end,            parms = nil */
  219.     kNavCtlPageUp                = 5,                            /*    page list up,                parms = nil */
  220.     kNavCtlPageDown                = 6,                            /*    page list down,                parms = nil */
  221.     kNavCtlGetLocation            = 7,                            /*    get current location,        parms<-AEDesc */
  222.     kNavCtlSetLocation            = 8,                            /*    set current location,        parms->AEDesc */
  223.     kNavCtlGetSelection            = 9,                            /*    get current selection,        parms<-AEDescList */
  224.     kNavCtlSetSelection            = 10,                            /*    set current selection,        parms->AEDescList */
  225.     kNavCtlShowSelection        = 11,                            /*    make selection visible,        parms = nil */
  226.     kNavCtlOpenSelection        = 12,                            /*    open view of selection,        parms = nil */
  227.     kNavCtlEjectVolume            = 13,                            /*    eject volume,                parms->vRefNum */
  228.     kNavCtlNewFolder            = 14,                            /*    create a new folder,        parms->StringPtr */
  229.     kNavCtlCancel                = 15,                            /*    cancel dialog,                parms = nil */
  230.     kNavCtlAccept                = 16,                            /*    accept dialog default,        parms = nil */
  231.     kNavCtlIsPreviewShowing        = 17,                            /*    query preview status,        parms<-Boolean */
  232.     kNavCtlAddControl            = 18,                            /*  add one control to dialog,    parms->ControlHandle */
  233.     kNavCtlAddControlList        = 19,                            /*    add control list to dialog,    parms->Handle (DITL rsrc) */
  234.     kNavCtlGetFirstControlID    = 20,                            /*    get 1st control ID,            parms<-UInt16 */
  235.     kNavCtlSelectCustomType        = 21,                            /*    select a custom menu item    parms->NavMenuItemSpec */
  236.     kNavCtlSelectAllType        = 22,                            /*  select an "All" menu item    parms->SInt16 */
  237.     kNavCtlGetEditFileName        = 23,                            /*    get save dlog's file name    parms<-StringPtr */
  238.     kNavCtlSetEditFileName        = 24,                            /*    set save dlog's file name    parms->StringPtr */
  239.     kNavCtlSelectEditFileName    = 25                            /*    select save dlog file name    parms->ControlEditTextSelectionRec, for v1.1 or greater */
  240. };
  241.  
  242. typedef SInt32                             NavCustomControlMessage;
  243.  
  244. enum {
  245.     kNavAllKnownFiles            = 0,
  246.     kNavAllReadableFiles        = 1,
  247.     kNavAllFiles                = 2
  248. };
  249.  
  250. typedef UInt16                             NavPopupMenuItem;
  251.  
  252. enum {
  253.     kNavSortNameField            = 0,
  254.     kNavSortDateField            = 1
  255. };
  256.  
  257. typedef UInt16                             NavSortKeyField;
  258.  
  259. enum {
  260.     kNavSortAscending            = 0,
  261.     kNavSortDescending            = 1
  262. };
  263.  
  264. typedef UInt16                             NavSortOrder;
  265.  
  266. enum {
  267.     kNavDefaultNavDlogOptions    = 0x000000E4,                    /* use defaults for all the options */
  268.     kNavNoTypePopup                = 0x00000001,                    /* don't show file type/extension popup on Open/Save */
  269.     kNavDontAutoTranslate        = 0x00000002,                    /* don't automatically translate on Open */
  270.     kNavDontAddTranslateItems    = 0x00000004,                    /* don't add translation choices on Open/Save */
  271.     kNavAllFilesInPopup            = 0x00000010,                    /* "All Files" menu item in the type popup on Open */
  272.     kNavAllowStationery            = 0x00000020,                    /* allow saving of stationery files */
  273.     kNavAllowPreviews            = 0x00000040,                    /* allow to show previews */
  274.     kNavAllowMultipleFiles        = 0x00000080,                    /* allow multiple items to be selected */
  275.     kNavAllowInvisibleFiles        = 0x00000100,                    /* allow invisible items to be shown */
  276.     kNavDontResolveAliases        = 0x00000200,                    /* don't resolve aliases */
  277.     kNavSelectDefaultLocation    = 0x00000400,                    /* make the default location the browser selection */
  278.     kNavSelectAllReadableItem    = 0x00000800                    /* make the dialog select "All Readable Documents" on Open */
  279. };
  280.  
  281. typedef UInt32                             NavDialogOptionFlags;
  282.  
  283. enum {
  284.     kNavTranslateInPlace        = 0,                            /*    translate in place, replacing translation source file (default for Save) */
  285.     kNavTranslateCopy            = 1                                /*    translate to a copy of the source file (default for Open) */
  286. };
  287.  
  288. typedef UInt32                             NavTranslationOptions;
  289.  
  290. struct NavMenuItemSpec {
  291.     UInt16                             version;
  292.     OSType                             menuCreator;
  293.     OSType                             menuType;
  294.     Str255                             menuItemName;
  295.     char                             reserved[245];
  296. };
  297. typedef struct NavMenuItemSpec            NavMenuItemSpec;
  298. typedef NavMenuItemSpec *                NavMenuItemSpecArrayPtr;
  299. typedef NavMenuItemSpecArrayPtr *        NavMenuItemSpecArrayHandle;
  300. typedef NavMenuItemSpecArrayPtr         NavMenuItemSpecPtr;
  301. typedef NavMenuItemSpecArrayHandle         NavMenuItemSpecHandle;
  302.  
  303. struct NavTypeList {
  304.     OSType                             componentSignature;
  305.     short                             reserved;
  306.     short                             osTypeCount;
  307.     OSType                             osType[1];
  308. };
  309. typedef struct NavTypeList                NavTypeList;
  310. typedef NavTypeList *                    NavTypeListPtr;
  311. typedef NavTypeListPtr *                NavTypeListHandle;
  312.  
  313. struct NavDialogOptions {
  314.     UInt16                             version;
  315.     NavDialogOptionFlags             dialogOptionFlags;            /* option flags for affecting the dialog's behavior */
  316.     Point                             location;                    /* top-left location of the dialog, or {-1,-1} for default position */
  317.     Str255                             clientName;
  318.     Str255                             windowTitle;
  319.     Str255                             actionButtonLabel;            /* label of the default button (or null string for default) */
  320.     Str255                             cancelButtonLabel;            /* label of the cancel button (or null string for default) */
  321.     Str255                             savedFileName;                /* default name for text box in NavPutFile (or null string for default) */
  322.     Str255                             message;                    /* custom message prompt (or null string for default) */
  323.     UInt32                             preferenceKey;                /* a key for to managing preferences for using multiple utility dialogs */
  324.     NavMenuItemSpecArrayHandle         popupExtension;                /* extended popup menu items, an array of NavMenuItemSpecs */
  325.     char                             reserved[494];
  326. };
  327. typedef struct NavDialogOptions            NavDialogOptions;
  328. /* data returned by the utility dialogs: */
  329.  
  330. struct NavReplyRecord {
  331.     UInt16                             version;
  332.     Boolean                         validRecord;                /* open/save: true if the user confirmed a selection, false on cancel */
  333.     Boolean                         replacing;                    /* save: true if the user is overwriting an existing object for save */
  334.     Boolean                         isStationery;                /* save: true if the user wants to save an object as stationery */
  335.     Boolean                         translationNeeded;            /* save: translation is 'needed', open: translation 'has taken place' */
  336.     AEDescList                         selection;                    /* open/save: list of AppleEvent descriptors of the chosen object(s) */
  337.     ScriptCode                         keyScript;                    /* open/save: script in which the name of each item in 'selection' is to be displayed */
  338.     FileTranslationSpecArrayHandle     fileTranslation;            /* open/save: list of file translation specs of the chosen object(s), if translation is needed */
  339.     UInt32                             reserved1;
  340.     char                             reserved[231];
  341. };
  342. typedef struct NavReplyRecord            NavReplyRecord;
  343. EXTERN_API( OSErr )
  344. NavLoad                            (void);
  345.  
  346. EXTERN_API( OSErr )
  347. NavUnload                        (void);
  348.  
  349. EXTERN_API( UInt32 )
  350. NavLibraryVersion                (void);
  351.  
  352. EXTERN_API( OSErr )
  353. NavGetDefaultDialogOptions        (NavDialogOptions *        dialogOptions);
  354.  
  355.  
  356. EXTERN_API( OSErr )
  357. NavGetFile                        (AEDesc *                defaultLocation, /* can be NULL */
  358.                                  NavReplyRecord *        reply,
  359.                                  NavDialogOptions *        dialogOptions,
  360.                                  NavEventUPP             eventProc, /* can be NULL */
  361.                                  NavPreviewUPP             previewProc, /* can be NULL */
  362.                                  NavObjectFilterUPP     filterProc, /* can be NULL */
  363.                                  NavTypeListHandle         typeList, /* can be NULL */
  364.                                  void *                    callBackUD) /* can be NULL */;
  365.  
  366. EXTERN_API( OSErr )
  367. NavPutFile                        (AEDesc *                defaultLocation, /* can be NULL */
  368.                                  NavReplyRecord *        reply,
  369.                                  NavDialogOptions *        dialogOptions,
  370.                                  NavEventUPP             eventProc, /* can be NULL */
  371.                                  OSType                 fileType,
  372.                                  OSType                 fileCreator,
  373.                                  void *                    callBackUD) /* can be NULL */;
  374.  
  375. EXTERN_API( OSErr )
  376. NavAskSaveChanges                (NavDialogOptions *        dialogOptions,
  377.                                  NavAskSaveChangesAction  action,
  378.                                  NavAskSaveChangesResult * reply,
  379.                                  NavEventUPP             eventProc, /* can be NULL */
  380.                                  void *                    callBackUD) /* can be NULL */;
  381.  
  382. EXTERN_API( OSErr )
  383. NavCustomAskSaveChanges            (NavDialogOptions *        dialogOptions,
  384.                                  NavAskSaveChangesResult * reply,
  385.                                  NavEventUPP             eventProc, /* can be NULL */
  386.                                  void *                    callBackUD) /* can be NULL */;
  387.  
  388. EXTERN_API( OSErr )
  389. NavAskDiscardChanges            (NavDialogOptions *        dialogOptions,
  390.                                  NavAskDiscardChangesResult * reply,
  391.                                  NavEventUPP             eventProc, /* can be NULL */
  392.                                  void *                    callBackUD) /* can be NULL */;
  393.  
  394. EXTERN_API( OSErr )
  395. NavChooseFile                    (AEDesc *                defaultLocation, /* can be NULL */
  396.                                  NavReplyRecord *        reply,
  397.                                  NavDialogOptions *        dialogOptions,
  398.                                  NavEventUPP             eventProc, /* can be NULL */
  399.                                  NavPreviewUPP             previewProc, /* can be NULL */
  400.                                  NavObjectFilterUPP     filterProc, /* can be NULL */
  401.                                  NavTypeListHandle         typeList, /* can be NULL */
  402.                                  void *                    callBackUD) /* can be NULL */;
  403.  
  404. EXTERN_API( OSErr )
  405. NavChooseFolder                    (AEDesc *                defaultLocation, /* can be NULL */
  406.                                  NavReplyRecord *        reply,
  407.                                  NavDialogOptions *        dialogOptions,
  408.                                  NavEventUPP             eventProc, /* can be NULL */
  409.                                  NavObjectFilterUPP     filterProc, /* can be NULL */
  410.                                  void *                    callBackUD) /* can be NULL */;
  411.  
  412. EXTERN_API( OSErr )
  413. NavChooseVolume                    (AEDesc *                defaultSelection, /* can be NULL */
  414.                                  NavReplyRecord *        reply,
  415.                                  NavDialogOptions *        dialogOptions,
  416.                                  NavEventUPP             eventProc, /* can be NULL */
  417.                                  NavObjectFilterUPP     filterProc, /* can be NULL */
  418.                                  void *                    callBackUD) /* can be NULL */;
  419.  
  420. EXTERN_API( OSErr )
  421. NavChooseObject                    (AEDesc *                defaultLocation, /* can be NULL */
  422.                                  NavReplyRecord *        reply,
  423.                                  NavDialogOptions *        dialogOptions,
  424.                                  NavEventUPP             eventProc, /* can be NULL */
  425.                                  NavObjectFilterUPP     filterProc, /* can be NULL */
  426.                                  void *                    callBackUD) /* can be NULL */;
  427.  
  428. EXTERN_API( OSErr )
  429. NavNewFolder                    (AEDesc *                defaultLocation, /* can be NULL */
  430.                                  NavReplyRecord *        reply,
  431.                                  NavDialogOptions *        dialogOptions,
  432.                                  NavEventUPP             eventProc, /* can be NULL */
  433.                                  void *                    callBackUD) /* can be NULL */;
  434.  
  435. EXTERN_API( OSErr )
  436. NavTranslateFile                (NavReplyRecord *        reply,
  437.                                  NavTranslationOptions     howToTranslate);
  438.  
  439. EXTERN_API( OSErr )
  440. NavCompleteSave                    (NavReplyRecord *        reply,
  441.                                  NavTranslationOptions     howToTranslate);
  442.  
  443. EXTERN_API( OSErr )
  444. NavCustomControl                (NavContext             context,
  445.                                  NavCustomControlMessage  selector,
  446.                                  void *                    parms);
  447.  
  448. EXTERN_API( OSErr )
  449. NavDisposeReply                    (NavReplyRecord *        reply);
  450.  
  451. EXTERN_API( Boolean )
  452. NavServicesCanRun                (void);
  453.  
  454.  
  455.  
  456. #if TARGET_RT_MAC_CFM
  457.     #ifdef __cplusplus
  458.         inline pascal Boolean NavServicesAvailable() { return ((NavLibraryVersion != (void*)kUnresolvedCFragSymbolAddress) && NavServicesCanRun()); }
  459.     #else
  460.         #define NavServicesAvailable()     ((NavLibraryVersion != (void*)kUnresolvedCFragSymbolAddress) && NavServicesCanRun())
  461.     #endif
  462. #else
  463.  
  464. EXTERN_API( Boolean )
  465. NavServicesAvailable            (void);
  466.  
  467. #endif
  468.  
  469. #if PRAGMA_STRUCT_ALIGN
  470.     #pragma options align=reset
  471. #elif PRAGMA_STRUCT_PACKPUSH
  472.     #pragma pack(pop)
  473. #elif PRAGMA_STRUCT_PACK
  474.     #pragma pack()
  475. #endif
  476.  
  477. #ifdef PRAGMA_IMPORT_OFF
  478. #pragma import off
  479. #elif PRAGMA_IMPORT
  480. #pragma import reset
  481. #endif
  482.  
  483. #ifdef __cplusplus
  484. }
  485. #endif
  486.  
  487. #endif /* __NAVIGATION__ */
  488.  
  489.